{
	//函数默认值
	function test(x,y='123'){//给y赋默认值,赋默认值的参数必须放在最后一个位置
		console.log(x,y);
	}
	test('yaozhen');//yaozhen 123
}

{
	//作用域
	let x="123";
	function test(x,y=x){// y等于函数内的x,如果函数参数中没有x,则会取外面的参数x
		console.log(x,y);
	}
	test("姚振");//姚振 姚振
	function test2(b,y=x){
		console.log(b,y);
	}
	test2("姚振");//姚振 123
}

{
	//rest参数
	function test(...args){
		//参数作为一个数组迭代
		for(let v of args){
			console.log(v);
		}
	}
	//输入的参数作为一个数组
	test(1,2,3,'a');
	//将数组分解成一个个元素
	console.log(...[1,2,3,4]);//1,2,3,4
	console.log('a',...[1,2,3]);
}

{
	//箭头函数:  test函数名  v: 参数,  =>后面跟函数体
	let test =v => v*2;
	let test1=()=>5; //无参函数
	console.log(test(2));//4
	console.log(test1());//5
}
{
	function tail(x){
		console.log(x);
	}
	function fx(x){
		//函数尾调用,一个函数里面调用另一个函数
		return tail(x);
	}
	fx(5);//5
}
